# -*- coding: UTF-8 -*-
from django.db import models
# Create your models here.
from user.models import UserInfo


class BranchInfo(models.Model):
    """
    支部表
    """
    BranchList = (
        (u'通一党支部', u'通一党支部'),
        (u'通二党支部', u'通二党支部'),
        (u'通三党支部', u'通三党支部'),
        (u'电一党支部', u'电一党支部'),
        (u'电二党支部', u'电二党支部'),
        (u'电三党支部', u'电三党支部'),
        (u'研究生第一党支部', u'研究生第一党支部'),
        (u'研究生第二党支部', u'研究生第二党支部'),
        (u'研究生第三党支部', u'研究生第三党支部'),
    )
    branch = models.CharField(
        verbose_name=u"支部名称",
        choices=BranchList,
        max_length=20,
    )
    def __str__(self):
        return self.branch

    class Meta:
        verbose_name = '支部列表'  # 单数形式
        verbose_name_plural = '支部列表'  # 复数形式


class ZSDYList(models.Model):
    """
    正式党员名单
    """
    name = models.OneToOneField(  # 一对一，一个人只有一个信息，一个信息只对应一个人
        UserInfo,
        verbose_name=u'正式党员名单',
        on_delete=models.CASCADE,
    )
    branch = models.ForeignKey(  # 一对多，一个人只有一个支部，但是一个支部有很多人
        BranchInfo,
        verbose_name=u'所属支部',
        on_delete=models.CASCADE,
    )
    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '正式党员名单'  # 单数形式
        verbose_name_plural = '正式党员名单'  # 复数形式

class YBDYList(models.Model):
    """
    预备党员名单
    """
    name = models.OneToOneField(
        UserInfo,
        verbose_name=u'积极分子姓名',
        on_delete=models.CASCADE,
    )
    branch = models.ForeignKey(
        BranchInfo,
        verbose_name=u'所属支部',
        on_delete=models.CASCADE,
    )
    devPeo = models.ManyToManyField(
        ZSDYList,
        verbose_name=u'培养人'
    )
    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '预备党员名单'  # 单数形式
        verbose_name_plural = '预备党员名单'  # 复数形式


class JJFZList(models.Model):
    name = models.OneToOneField(
        UserInfo,
        verbose_name=u'积极分子姓名',
        on_delete=models.CASCADE,
    )
    branch = models.ForeignKey(
        BranchInfo,
        verbose_name=u'所属支部',
        on_delete=models.CASCADE,
    )
    devPeo = models.ManyToManyField(
        ZSDYList,
        verbose_name=u'第一培养人'
    )
    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '积极分子名单'  # 单数形式
        verbose_name_plural = '积极分子名单'  # 复数形式


class DailyInfo(models.Model):
    """
    支部日常活动
    """
    DAILYTYPE = (
        (u"读书交流会", u"读书交流会"),
        (u"入党答辩", u"入党答辩"),
        (u"发展转正大会", u"发展转正大会"),
        (u"组织生活会", u"组织生活会"),
        (u"其他", u"其他"),
    )
    branch = models.ForeignKey(  # 一对多，一个日常只有一个支部，但是一个支部有很多日常
        BranchInfo,
        verbose_name=u'所属支部',
        on_delete=models.CASCADE,
    )
    dailyType = models.CharField(
        verbose_name=u"活动类型",
        choices=DAILYTYPE,
        max_length=20,
        default=u'',
    )
    dailyTime = models.CharField(
        verbose_name=u"活动时间",
        default=u'',
        max_length=50,
    )
    dailyDate = models.CharField(
        verbose_name=u"活动日期",
        default=u'',
        max_length=50,
    )
    position = models.CharField(
        verbose_name=u"活动地点",
        default=u'',
        max_length=50,
    )
    topic = models.CharField(
        verbose_name=u"活动主题",
        default=u'',
        max_length=1000,
    )
    attention = models.CharField(
        verbose_name=u"活动注意事项",
        default=u'',
        max_length=1000,
    )
    participant = models.CharField(  # 参加会议的人员如积极分子-预备党员，积极分子-预备党员-正式党员
        verbose_name=u'参加活动人员',
        default=u'',
        max_length=100,
    )
    createTime = models.DateTimeField(
        auto_now_add=True,
        verbose_name=u"创建时间",
    )

    def __unicode__(self):
        return self.topic
    
    def __str__(self):
        return self.topic

    class Meta:
        ordering = ('createTime',)
        verbose_name = '支部活动'  # 单数形式
        verbose_name_plural = '支部活动'  # 复数形式


class ArticleInfo(models.Model):
    """
    文章保存表
    """
    articleTopic = models.CharField(
        verbose_name=u'文章所属主题',
        default=u'',
        max_length=100,
    )
    title = models.CharField(
        verbose_name=u'文章题目',
        default=u'',
        max_length=100,
    )
    imgsrc = models.CharField(
        verbose_name=u'预览照片url',
        default=u'',
        max_length=200,
    )
    txtsrc = models.CharField(
        verbose_name=u'文章url',
        default=u'',
        max_length=200,
    )
    preview = models.CharField(
        verbose_name=u'预览文字',
        default=u'',
        max_length=200,
    )
    createTime = models.DateTimeField(
        auto_now_add=True,
        verbose_name=u"创建时间",
    )
    def __unicode__(self):
        return self.name
    def __str__(self):
        return self.title

    class Meta:
        ordering = ('createTime',)
        verbose_name = '文章'  # 单数形式
        verbose_name_plural = '文章'  # 复数形式


class QuestionInfo(models.Model):
    """
    题目信息
    """
    answer = models.CharField(
        verbose_name=u'题目答案',
        default=u'',
        max_length=200,
    )
    question = models.CharField(
        verbose_name=u'题目问题',
        default=u'',
        max_length=200,
    )
    def __str__(self):
        return self.question

    class Meta:
        verbose_name = '题目'  # 单数形式
        verbose_name_plural = '题目'  # 复数形式


class ThinkInfo(models.Model):
    """
    读书交流会感想表
    """
    author = models.ForeignKey(
        UserInfo,
        verbose_name=u'感想作者',
        on_delete=models.CASCADE,
    )
    daily = models.ForeignKey(
        DailyInfo,
        verbose_name=u'哪个会议的感想',
        on_delete=models.CASCADE,
    )
    content = models.CharField(
        verbose_name=u'会议感想',
        default=u'',
        max_length=300,
    )
    def __str__(self):
        return self.question

    class Meta:
        verbose_name = '题目'  # 单数形式
        verbose_name_plural = '题目'  # 复数形式



# 文件信息
class FileStore(models.Model):
    FILETYPE = (
        (0, u'音频文件'),
        (1, u'MusicXml文件'),
        (2, u'MIDI文件'),
        (3, u'Mp3文件'),
    )
    ossname = models.CharField(
        max_length=225,
        verbose_name=u'oss存储name',
        default=None,
    )
    fileType = models.SmallIntegerField(
        choices=FILETYPE,
        default=0,
        verbose_name=u"文件类型",
    )
    name = models.CharField(
        max_length=225,
        verbose_name=u'乐谱name',
        default=None,
        # null=True,
    )
    createTime = models.DateTimeField(
        auto_now_add=True,
        verbose_name=u"创建时间",
    )
    lastVisitTime = models.DateTimeField(
        auto_now_add=True,
        verbose_name=u"最后访问时间",
    )

    def __unicode__(self):
        return self.ossname

    class Meta:
        ordering = ('createTime',)

        # on_delete=None,               # 删除关联表中的数据时,当前表与其关联的field的行为
        # on_delete=models.CASCADE,     # 删除关联数据,与之关联也删除
        # on_delete=models.DO_NOTHING,  # 删除关联数据,什么也不做
        # on_delete=models.PROTECT,     # 删除关联数据,引发错误ProtectedError
        # # models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
        # on_delete=models.SET_NULL,    # 删除关联数据,与之关联的值设置为null（前提FK字段需要设置为可空,一对一同理）
        # # models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
        # on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值（前提FK字段需要设置默认值,一对一同理）
        # on_delete=models.SET,         # 删除关联数据,
        #  a. 与之关联的值设置为指定值,设置：models.SET(值)
        #  b. 与之关联的值设置为可执行对象的返回值,设置：models.SET(可执行对象)
